#include "adresse.h"

Adresse::Adresse()
{
    m_numeroRue = "";
    m_rue = "";
    m_codePostal = "";
    m_ville = "";
    m_departement = "";
}
Adresse::Adresse(QString numeroRue, QString rue, QString codePostal, QString ville)
{
    m_numeroRue = numeroRue;
    m_rue = rue;
    m_codePostal = codePostal;
    m_ville = ville;
    m_departement = codePostal.left(2);
}
////////////////////////
//
//  Accesseur
//
////////////////////////
void Adresse::setNumeroRue(QString numeroRue)
{
    m_numeroRue = numeroRue;
}
void Adresse::setRue(QString rue)
{
    m_rue = rue;
}
void Adresse::setcodePostal(QString codePostal)
{
    m_codePostal = codePostal;
    m_departement = codePostal.left(2);
}
void Adresse::setDepartement(QString departement)
{
    m_departement = departement;
}
void Adresse::setVille(QString ville)
{
    m_ville = ville;
}
QString Adresse::getNumeroRue()const
{
    return m_numeroRue;
}
QString Adresse::getRue()const
{
    return m_rue;
}
QString Adresse::getCodePostal()const
{
    return m_codePostal;
}
QString Adresse::getVille()const
{
    return m_ville;
}
QString Adresse::getDepartement()const
{
    return m_departement;
}
////////////////////////
//
//  static SQL
//
////////////////////////
const QString Adresse::NomChampNumeroRue = QString("Numero");
const QString Adresse::NomChampNomRue = QString("Voie");
const QString Adresse::NomChampCodePostal = QString("CodePostal");
const QString Adresse::NomChampVille = QString("Ville");
const QString Adresse::NomChampDepartement = QString("Departement");

QStringList Adresse::ListeChampSQL()
{
    QStringList l;
    l << NomChampNumeroRue << NomChampNomRue << NomChampCodePostal << NomChampVille << NomChampDepartement;
    return l;
}
QStringList Adresse::ListeTypeDataSQL()
{
    QStringList l;
    l << "varchar(6)" << "varchar(50)" << "char(5)" << "varchar(30)" << "char(2)";
    return l;
}
QString Adresse::SQLSet()const
{
    QString ville = getVille().replace("'", "''");
    return NomChampNumeroRue + "='" + m_numeroRue + "', " + NomChampNomRue + "='" + m_rue + "', " + NomChampCodePostal
            + "='" + m_codePostal
            + "', " + NomChampVille + "='" + ville + "', " + NomChampDepartement + "='" + m_departement + "'";
}
QString Adresse::SetQuery()const
{
    return NomChampNumeroRue + "=:" + NomChampNumeroRue + ", " + NomChampNomRue + "=:" + NomChampNomRue
            + ", " +  NomChampCodePostal + "=:" + NomChampCodePostal + ", " + NomChampVille + "=:"
            + NomChampVille + ", " + NomChampDepartement + "=:" + NomChampDepartement;
}
QStringList Adresse::SetBindValues()const
{
    QStringList l;
    l << NomChampNumeroRue << m_numeroRue << NomChampNomRue << m_rue
      << NomChampCodePostal << m_codePostal
         << NomChampVille << m_ville << NomChampDepartement << m_departement;
    return l;
}
////////////////////////
//
//  Operateur
//
////////////////////////
bool Adresse::operator==(Adresse const& adresse)
{

    return (m_numeroRue.toLower() == adresse.getNumeroRue().toLower()) && (m_rue.toLower() == adresse.getRue().toLower())
            && (m_codePostal.toLower() == adresse.getCodePostal().toLower()) && (m_ville.toLower() == adresse.getVille().toLower())
            && (m_departement.toLower() == adresse.getDepartement().toLower());
}
